package org.sample.project.util;

import java.util.Comparator;

/**
 * 版本号比较工具类
 * Created by foolrabbit on 2025-01-22.
 */
public class VersionComparator implements Comparator<String> {

    /**
     * 比较两个版本号的大小。
     *
     * @param version1 第一个版本号（如 "1.2.3"）
     * @param version2 第二个版本号（如 "1.3.2"）
     * @return 返回比较结果：
     *         -1：version1 < version2
     *          0：version1 == version2
     *          1：version1 > version2
     */
    public static int compareVersions(String version1, String version2) {
        // 将版本号按 "." 分割成数组
        String[] v1 = version1.split("\\.");
        String[] v2 = version2.split("\\.");

        // 获取最大长度
        int maxLength = Math.max(v1.length, v2.length);

        // 逐段比较
        for (int i = 0; i < maxLength; i++) {
            int num1 = (i < v1.length) ? Integer.parseInt(v1[i]==""?"0":v1[i]) : 0;
            int num2 = (i < v2.length) ? Integer.parseInt(v2[i]==""?"0":v2[i]) : 0;

            if (num1 < num2) {
                return -1;
            } else if (num1 > num2) {
                return 1;
            }
        }

        // 如果所有段都相等，则版本号相等
        return 0;
    }

    @Override
    public int compare(String v1, String v2) {
        return compareVersions(v1, v2);
    }
}
